#   *
#  ***
# *****
#  ***
#   *
num = 3
#for i in range(1,6,2):
 #   print(i,end= '')

#for i in range(1,3+1):
#   for j in range(3-1,0,-1):
#      print("",end="")
#     for k in range(1,2*3,2):
#        print("*",end="")
#       print()

hang = 7
for i in range(1,2*((hang-1)//2+1),2):
    print(("*"*i).center(hang))
for i in range(2*((hang-1)//2),0,-2):
    print(("*"*i).center(hang))

#写一个九九乘法表+
def print_multiplication_table():
    """
    打印九九乘法表。
    """
    try:
        # 循环打印每一行
        for i in range(1, 10):  # 外层循环控制行数
            for j in range(1, i + 1):  # 内层循环控制列数
                print(f"{j}x{i}={i * j}", end="\t")  # 打印乘法表达式
            print()  # 换行
    except Exception as e:
        print(f"发生错误：{e}")

# 调用函数
print_multiplication_table()


#打印水仙花数
def print_narcissistic_numbers():
    """
    打印所有三位数的水仙花数。
    """
    try:
        for num in range(100, 1000):
            # 分解数字为各个位数
            hundreds = num // 100
            tens = (num % 100) // 10
            ones = num % 10

            # 判断是否为水仙花数
            if num == hundreds ** 3 + tens ** 3 + ones ** 3:
                print(num)
    except Exception as e:
        print(f"发生错误：{e}")


# 调用函数
print_narcissistic_numbers()

#完数
def print_perfect_numbers(n):
    """
    打印指定范围内所有的完数。

    参数:
    n -- 检查完数的最大范围
    """
    try:
        if not isinstance(n, int) or n <= 0:
            raise ValueError("n 必须是一个正整数")

        for num in range(1, n + 1):
            sum_of_divisors = 0
            for divisor in range(1, num // 2 + 1):
                if num % divisor == 0:
                    sum_of_divisors += divisor
            if sum_of_divisors == num:
                print(num)
    except Exception as e:
        print(f"发生错误：{e}")


# 调用函数
print_perfect_numbers(10000)

#质数
def is_prime(n):
    """
    判断一个数是否为质数。

    参数:
    n -- 待判断的整数

    返回:
    如果 n 是质数，则返回 True；否则返回 False
    """
    if n <= 1:
        return False
    if n <= 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    i = 5
    while i * i <= n:
        if n % i == 0 or n % (i + 2) == 0:
            return False
        i += 6
    return True


def print_primes(max_num):
    """
    打印指定范围内的所有质数。

    参数:
    max_num -- 最大范围
    """
    try:
        if not isinstance(max_num, int) or max_num <= 0:
            raise ValueError("max_num 必须是一个正整数")

        for num in range(2, max_num + 1):
            if is_prime(num):
                print(num)
    except Exception as e:
        print(f"发生错误：{e}")


# 调用函数
print_primes(100)

#非波纳契数列
def generate_fibonacci(n):
    """
    生成斐波那契数列。

    参数:
    n -- 数列的长度

    返回:
    一个包含 n 个斐波那契数的列表
    """
    try:
        if not isinstance(n, int) or n < 0:
            raise ValueError("n 必须是一个非负整数")

        if n == 0:
            return []
        elif n == 1:
            return [0]
        elif n == 2:
            return [0, 1]

        fib = [0, 1]
        for i in range(2, n):
            fib.append(fib[-1] + fib[-2])
        return fib
    except Exception as e:
        print(f"发生错误：{e}")
        return []


def print_fibonacci(n):
    """
    打印斐波那契数列。

    参数:
    n -- 数列的长度
    """
    fib = generate_fibonacci(n)
    print(fib)


# 调用函数
print_fibonacci(10)
